package gui;

import abstratos.GUI;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JDialog;
import mvc.modelos.Vendedor;
import java.util.ArrayList;
import java.util.List;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JTable;
import javax.swing.table.TableColumn;

public class TelaVenda extends javax.swing.JDialog implements GUI{

    private mvc.controladores.CadastroVenda controladorVenda;
    private mvc.controladores.ComboboxesVenda controladorCombos;
    private mvc.modelos.Venda modelo;
    private List<mvc.modelos.Vendedor> vendedores;

    public TelaVenda(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
        inicializar();
    }

    private void inicializar()
    {
        modelo = new mvc.modelos.Venda();
        controladorVenda = new mvc.controladores.CadastroVenda();
        controladorVenda.setModelo(modelo);
        controladorCombos = new mvc.controladores.ComboboxesVenda();
        controladorCombos.setGUI(this);
        vendedores = new ArrayList<Vendedor>();
        adicionarListeners();
        configurarTabela();
    }

    private boolean validar() {
        if(!tfQtd.getText().matches("[1-9]"))
            return false;
        return true;
    }

    public void adicionarListeners() {
        bCancelar.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                get().dispose();
            }
        });
        bInserir.addActionListener(controladorVenda);
        this.addWindowListener(controladorCombos);
    }
    
    public void configurarTabela() {
        tLivro.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        TableColumn coluna = tLivro.getColumnModel().getColumn(0);
        coluna.setPreferredWidth(50);
        coluna = tLivro.getColumnModel().getColumn(1);
        coluna.setPreferredWidth(353);
        coluna = tLivro.getColumnModel().getColumn(2);
        coluna.setPreferredWidth(80);       
    }

    public void setCBModelVendedor(DefaultComboBoxModel modelo)
    {
        cbVendedor.setModel(modelo);
        cbVendedor.setSelectedIndex(-1);
    }

    public void setCBModelLivro(DefaultComboBoxModel modelo)
    {
        cbLivro.setModel(modelo);
        cbLivro.setSelectedIndex(-1);
    }

    //Métodos para obtenção dos dados para o modelo, por parte do controlador
    public int getCodigoVendedor()
    {
        return -1;
    }

    public String getData()
    {
        return null;
    }

    private JDialog get()
    {
        return this;
    }

    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();
        tLivro = new javax.swing.JTable();
        jLabel1 = new javax.swing.JLabel();
        tfCodigo = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        tfQtd = new javax.swing.JTextField();
        tfTotal = new javax.swing.JTextField();
        jLabel3 = new javax.swing.JLabel();
        bInserir = new javax.swing.JButton();
        bCancelar = new javax.swing.JButton();
        jLabel4 = new javax.swing.JLabel();
        tfData = new javax.swing.JFormattedTextField();
        jLabel5 = new javax.swing.JLabel();
        cbLivro = new javax.swing.JComboBox();
        jLabel6 = new javax.swing.JLabel();
        cbVendedor = new javax.swing.JComboBox();
        jSeparator1 = new javax.swing.JSeparator();
        jButton1 = new javax.swing.JButton();
        jSeparator2 = new javax.swing.JSeparator();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Venda de Livros");
        setResizable(false);
        getContentPane().setLayout(null);

        jScrollPane1.setName("jScrollPane1"); // NOI18N

        tLivro.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Código", "Título", "Preço Unitário", "Quantidade"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, true, false, true
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tLivro.setName("tLivro"); // NOI18N
        tLivro.getTableHeader().setReorderingAllowed(false);
        jScrollPane1.setViewportView(tLivro);
        tLivro.getColumnModel().getColumn(0).setResizable(false);
        tLivro.getColumnModel().getColumn(1).setResizable(false);
        tLivro.getColumnModel().getColumn(2).setResizable(false);

        getContentPane().add(jScrollPane1);
        jScrollPane1.setBounds(10, 100, 560, 170);

        jLabel1.setText("Código da Venda:");
        jLabel1.setName("jLabel1"); // NOI18N
        getContentPane().add(jLabel1);
        jLabel1.setBounds(10, 5, 85, 14);

        tfCodigo.setEditable(false);
        tfCodigo.setName("tfCodigo"); // NOI18N
        getContentPane().add(tfCodigo);
        tfCodigo.setBounds(10, 20, 60, 20);

        jLabel2.setText("Quantidade:");
        jLabel2.setName("jLabel2"); // NOI18N
        getContentPane().add(jLabel2);
        jLabel2.setBounds(10, 50, 60, 14);

        tfQtd.setName("tfQtd"); // NOI18N
        getContentPane().add(tfQtd);
        tfQtd.setBounds(10, 66, 60, 20);

        tfTotal.setEditable(false);
        tfTotal.setName("tfTotal"); // NOI18N
        getContentPane().add(tfTotal);
        tfTotal.setBounds(510, 276, 60, 20);

        jLabel3.setText("Total:");
        jLabel3.setName("jLabel3"); // NOI18N
        getContentPane().add(jLabel3);
        jLabel3.setBounds(478, 276, 28, 14);

        bInserir.setText("Inserir Venda");
        bInserir.setName("bInserir"); // NOI18N
        getContentPane().add(bInserir);
        bInserir.setBounds(474, 310, 97, 23);

        bCancelar.setText("Cancelar");
        bCancelar.setName("bCancelar"); // NOI18N
        getContentPane().add(bCancelar);
        bCancelar.setBounds(380, 310, 75, 23);

        jLabel4.setText("Data");
        jLabel4.setName("jLabel4"); // NOI18N
        getContentPane().add(jLabel4);
        jLabel4.setBounds(280, 5, 23, 14);

        try {
            tfData.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.MaskFormatter("##/##/####")));
        } catch (java.text.ParseException ex) {
            ex.printStackTrace();
        }
        tfData.setName("tfData"); // NOI18N
        getContentPane().add(tfData);
        tfData.setBounds(280, 20, 110, 20);

        jLabel5.setText("Livro:");
        jLabel5.setName("jLabel5"); // NOI18N
        getContentPane().add(jLabel5);
        jLabel5.setBounds(90, 50, 60, 14);

        cbLivro.setName("cbLivro"); // NOI18N
        getContentPane().add(cbLivro);
        cbLivro.setBounds(90, 66, 160, 20);

        jLabel6.setText("Vendedor:");
        jLabel6.setName("jLabel6"); // NOI18N
        getContentPane().add(jLabel6);
        jLabel6.setBounds(110, 5, 60, 14);

        cbVendedor.setName("cbVendedor"); // NOI18N
        getContentPane().add(cbVendedor);
        cbVendedor.setBounds(110, 20, 160, 20);

        jSeparator1.setName("jSeparator1"); // NOI18N
        getContentPane().add(jSeparator1);
        jSeparator1.setBounds(0, 305, 580, 10);

        jButton1.setText("Inserir Item");
        jButton1.setName("jButton1"); // NOI18N
        getContentPane().add(jButton1);
        jButton1.setBounds(10, 276, 90, 23);

        jSeparator2.setName("jSeparator2"); // NOI18N
        getContentPane().add(jSeparator2);
        jSeparator2.setBounds(0, 48, 580, 10);

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-587)/2, (screenSize.height-364)/2, 587, 364);
    }// </editor-fold>//GEN-END:initComponents

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton bCancelar;
    private javax.swing.JButton bInserir;
    private javax.swing.JComboBox cbLivro;
    private javax.swing.JComboBox cbVendedor;
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JSeparator jSeparator2;
    private javax.swing.JTable tLivro;
    private javax.swing.JTextField tfCodigo;
    private javax.swing.JFormattedTextField tfData;
    private javax.swing.JTextField tfQtd;
    private javax.swing.JTextField tfTotal;
    // End of variables declaration//GEN-END:variables

}
